package com.xiyuan;


/**
 * 工程服务，实现了工程服务接口的类，在conf/zhiqim.xml中配置则会注册到Global中
 * 
 * @version v1.0.0 @author lgz 2017-8-27 新建与整理
 */
public interface Service
{
    /*********************************************************/
    //服务编号
    /*********************************************************/
    
    /** 设置服务编号,对应conf/zhiqim.xml/service/key */
    public void setId(String id);
    
    /** 获取服务编号 */
    public String getId();
    
    /**是否为多例服务*/
    public boolean isMulti();
    /*********************************************************/
    //服务创建和销毁
    /*********************************************************/
    
    /**
     * 服务创建接口，配置信息从Global中读取
     * 
     * @return boolean =true,启动成功,=false,启动失败
     * @throws Exception Startup捕捉,打印日志,作失败处理
     */
    public boolean create() throws Exception;
    
    /**
     * 服务销毁接口，配置信息从Global中读取
     * 
     * @throws Exception Hook捕捉,打印日志,异常不处理，直接退出
     */
    public void destroy() throws Exception;
    
    /*********************************************************/
    //更新和测试更新配置
    /*********************************************************/
    
    /**
     * 测试更新配置
     * 
     * @return              =true表示可以更新，=false表示更新可能有问题
     * @throws Exception    异常时表示不可更新
     */
    public boolean test() throws Exception;
    
    /**
     * 服务更新配置
     * 
     * @throws Exception 出现更新异常通知配置端
     */
    public void update() throws Exception;
}
